package cn.geoportal.benoserver.service;

import cn.geoportal.benoserver.entity.PoiInfo;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 *
 */
public interface PoiInfoService extends IService<PoiInfo> {
    /**
     * 1. 添加POI
     * @param name 名称
     * @param address 地址
     * @param phone 联系电话
     * @param lat   纬度
     * @param lng   经度
     * @return
     */
    int addPoiInfo(String name, String address, String phone, double lat, double lng);

    /**
     *
     * @param page
     * @param wrapper
     * @return
     */
    IPage<PoiInfo> queryPoiInfoPage(Page<PoiInfo> page, QueryWrapper<PoiInfo> wrapper);

    /**
     * 3. 获取指定id的PoiInfo
     * @param id
     * @return
     */
    PoiInfo getPoiInfoById(Integer id);

    /**
     * 4. 更新指定id的PoiInfo
     */
    int updatePoiInfoById(Integer id, String name, String address, String phone, double lat, double lng);

    /**
     * 5. 删除指定id的PoiInfo
     * @param id
     * @return
     */
    int deletePoiById(Integer id);

    /**
     * 6. 按距离寻找缓冲区类的所有POI
     * @param lat
     * @param lng
     * @param radius
     * @return
     */
    List<PoiInfo> findWithDistance(double lat, double lng, double radius);

    /**
     * 7. 寻找最近的POI
     * @param lat
     * @param lng
     * @param count
     * @return
     */
    List<PoiInfo> findNearestPOI(double lat, double lng, Integer count);
}
